package com.qihui.ssh.dao.sys;

import java.io.Serializable;
import java.util.List;
import com.qihui.ssh.dao.entities.BasePOJO;

@SuppressWarnings("rawtypes")
public interface BaseDAO {

	/**
	 * Create POJO
	 * 
	 * @param basePOJO
	 * @return BasePOJO The return of a lasting state of POJO
	 */
	BasePOJO createPOJO(BasePOJO basePOJO);

	/**
	 * Update POJO
	 * 
	 * @param basePOJO
	 */
	void updatePOJO(BasePOJO basePOJO);

	/**
	 * Merge POJO
	 * 
	 * @param basePOJO
	 */
	void mergePOJO(BasePOJO basePOJO);

	/**
	 * Delete POJO
	 * 
	 * @param c
	 * @param id
	 */

	void deletePOJO(Class c, Serializable id);

	/**
	 * Delete POJO
	 * 
	 * @param basePOJO
	 */
	void deletePOJO(BasePOJO basePOJO);

	/**
	 * Load POJO By ID
	 * 
	 * @param c
	 * @param id
	 * @return BasePOJO
	 */
	BasePOJO loadPOJO(Class c, Serializable id);

	/**
	 * Get POJO by Id
	 * 
	 * @param c
	 * @param id
	 * @return
	 */
	BasePOJO getPOJO(Class c, Serializable id);

	/**
	 * Load all POJO
	 * 
	 * @param c
	 * @return List
	 */
	List loadAllPOJO(Class c);
}
